// 使用express中router中间件
let express = require("express");
let jwt = require("jsonwebtoken");
// 1-创建一个路由中间件
let router = express.Router();

// 导入 Todo对象
let { User } = require("../models/db");

//  / todos get请求--、
// router.get("/", async function (req, res) {
//   // 查询列表
//   let resArr = await User.find().sort({ _id: -1 });
//   res.json({ msg: "列表 todos", data: resArr });
// });

// 登录
router.get("/", async function (req, res) {
  // 查询列表--get--搜索参数--username password
  // {username：’zhangs，password}

  // ======== 登录成功-返回token
  let resArr = await User.find(req.query)
    .sort({ _id: -1 })
    .select({ password: 0 });
  if (resArr.length == 0) {
    res.json({ msg: "请检查用户名或密码", data: resArr, code: 0 });
  } else {
    // 生成jwt --返回给 浏览器
    // resArr[0]._id  用户的id
    let token = jwt.sign(
      { username: req.query.username, uid: resArr[0]._id }, //token 保存的数据
      "test123", //秘钥--后端知道
      { expiresIn: "365d", algorithm: "HS256" }
    );
    console.log(token);
    res.json({ msg: "登录成功", data: resArr[0], code: 1, token });
  }
});

router.get("/:id", async function (req, res) {
  // 跟todoid 查询星期
  let obj = await User.findById(req.params.id);
  res.json({ msg: "列表 todos", data: obj });
});

//  / todos delete请求--、
// 根据id删除
router.delete("/:id", async function (req, res) {
  // 删除数据
  let r = await User.findByIdAndDelete(req.params.id);
  res.json({ msg: "delete todos", code: 1 });
});
//  / todos patch请求--、

// 根据id修改
router.patch("/:id", async function (req, res) {
  //  await Todo.findByIdAndUpdate(req.params.id,{title:req.body.title,})
  //   req.body {title:'aa',completed:1}
  //   await Todo.findByIdAndUpdate(req.params.id, { ...req.body });
  await User.findByIdAndUpdate(req.params.id, req.body);
  res.json({ msg: "patch todos" });
});

//  / todos post请求--、
router.post("/", async function (req, res) {
  await User.create(req.body);
  // Todo 数据库中插入数据 create
  res.json({ msg: "post todos" });
});

// 3- 导出router中间件
module.exports = router;
